#include <QPushButton>
#include "paneledicionmodo.h"

extern char*nombresNotas1[12];
extern char*nombresNotas2[12];
//char* nombresNotas1[12] = { "do", "do#", "re", "re#", "mi", "fa", "fa#", "sol", "sol#", "la", "la#", "si" };
//char* nombresNotas2[12] = { "do", "reb", "re", "mib", "mi", "fa", "solb", "sol", "lab", "la", "sib", "si" };

PanelEdicionModo::PanelEdicionModo(QWidget *parent)
    : QWidget(parent)
{
    ui.setupUi(this);

    setFocusProxy(ui.editNombre);
    
    generarOctava();
}

PanelEdicionModo::~PanelEdicionModo()
{

}

void PanelEdicionModo::mostrar(const DatosModo& datosModo)
{
    ui.editNombre->setText(datosModo.nombre);
    ui.editAlias->setText(datosModo.alias);

    int bit = 0x01;
    for (int i = 0; i < 12; i++) {        
        listaBotonesOctava[i]->setChecked(datosModo.codigo & bit);
        bit = bit << 1;
    }
}

bool PanelEdicionModo::recuperar(DatosModo& datosModo)
{
    QString nombre = ui.editNombre->text();
    if (nombre.isEmpty()) {
        mensajeError = "Debe especificar un nombre";
        ui.editNombre->setFocus();
        return false;
    }
    datosModo.nombre = nombre;
    datosModo.alias = ui.editAlias->text();

    int numeroNotas = 0;
    int codigo = 0;
    int bit = 0x01;
    for (int i = 0; i < 12; i++) {        
        if (listaBotonesOctava[i]->isChecked()) {
            codigo = codigo | bit;
            numeroNotas++;
        }
        bit = bit << 1;
    }
    datosModo.codigo = codigo;
    datosModo.numeroNotas = numeroNotas;
    return true;
}

void PanelEdicionModo::generarOctava()
{
    for (int i = 0; i < 12; i++) {
        agregarNotaAOctava(i);
    }
}

void PanelEdicionModo::agregarNotaAOctava(int i)
{
    QLabel* etiquetaSuperior = new QLabel(this);
    etiquetaSuperior->setText(nombresNotas1[i]);
    etiquetaSuperior->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
    ui.gridLayout->addWidget(etiquetaSuperior, 0, i);

    QPushButton* boton = new QPushButton(this);
    boton->setObjectName(QString("boton%1").arg(i, 2, 10, QLatin1Char('0')));
    boton-> setCheckable(true);
    ui.gridLayout->addWidget(boton, 1, i);

    listaBotonesOctava.append(boton);

    QLabel* etiquetaInferior = new QLabel(this);
    etiquetaInferior->setText(nombresNotas2[i]);
    etiquetaInferior->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
    ui.gridLayout->addWidget(etiquetaInferior, 2, i);
}